% Chapter 1. Section 1.

\chapter{What is a Free Software}
Usually people think that free software is the software for which one does not need to pay. In fact the software we talk about here is not that one. The mess comes up because of the two meanings of the English word "free". One consider free as free speech, not free food. As the first stereotype is already broken let's go deeper into the philosophy of the free software.

\section{Free software philosophy}
\label{philosophy}
As you already found out free software is not the non-paid software. In fact free software can be paid. In this world people need to earn money to be able to leave. So, if nobody pays for your work (the free software you develop and maintain) then you will stop it and get hired in a software company which will pay for your job. The free software community of course makes money, but the money usually comes not from direct purchases of the software, but usually from it's technical support and maintenance. 

\subsection{Free speech not free food}
Now let's see how the free software gives you freedom. Let's understand how do we loose our freedom using non-free software. Users usually don't pay attention to the fact that they are somehow ought to use some non-free (also called proprietary software). For example if you have paid for a cool-featured software and you use it for some time you get hang on it. And later, if the producing company releases the newer version or some updates the software asks you to get those new cool features and have a newer, more powerful and more beautiful version of the same cool software. And you will probably get that new version. But wait... Where is your freedom of choice? It were not you who decided to update the software, but the software (and the producing company which stands behind the software). So we come to the fact that you are in dependency from that software. And likely you are going to pay for the newer and cooler versions of it in future.

Many computer users all over the world are in this situation. Many few of them understand that they are in trouble. The problem is that people don't think that they have problems using proprietary software. They usually don't want to think that they are in a dependency from a software. People likely think that they control the software and the machine they have obtained. It's terrible to think that in fact the software controls you.

We come to the fact that most of the computer users either don't know about the problem, or don't want to see it. But of course there are people who see the problem and fight it! And that battle has started in early 1983 when a software engineer named Richard Stallman decided to give people freedom. 

The most important software is the operating system (if the term is not known to the user, please see \ref{os}). Exactly the operating system makes the hardware alive. The operating system allows the user to communicate and control (!) the hardware and all the resources in the machine. And it is really important to have freedom in the operating system. Mr. Stallman started exactly with that point. In those early days UNIX and all of it's modifications were the dominating operating systems. And unfortunately they all were proprietary. So Mr. Stallman decided to develop a new and free operating system which would be compatible with UNIX. And that operating system is GNU (see \ref{gnu} for details).

\subsection{Sharing is good}
Let's get deeper into the bad aspects of non-free software. Let's say you have obtained a cool proprietary software with a full set of features that you need for your particular problem. You use it for some time and really like it. You tell about that software a friend of yours who is working on a similar problem, he gets interested in that software and asks you to give him a copy. Now you come up to a dilemma. If you give a copy of the software to your friend, you will brake the law (the license doesn't allow you to redistribute the software). From the other side, if you refuse your friend, you can lose him. If you are really good friends, then you will probably give him a copy (you will choose the less evil) and break the law. Of course you have your justification: you don't know the guys from the producing company and you don't care of them. But still you have made evil breaking the law.

There are two possible solutions: a) do not have any friends, b) do not use proprietary software. Of course someone could do without friends, but I hope most will prefer not to use proprietary software. But is there any alternative? How do we overcome these limitations? The alternative is there and it is the Free Software. Let's see how Mr. Stallman defines that term.

\subsection{Definition of Free Software}
As the reader can guess free software will come to solve at least the mentioned problems of dependency and sharing. As the founder of the Free Software Movement Richard Stallman defines, the free software is the one which satisfies the four essential freedoms listed below.

\subsubsection{Freedom 0}
\textbf{The freedom to run the program, for any purpose.} At the first view it sounds absurd to care about the freedom to use the software but we'll see that there are some problems in this also. I'm not sure if everyone always reads the whole End User License Agreement (EULA) which comes along the software, but they usually may contain some interesting (from our point of view) points. For example one cannot use any software with home or educational license in commercial purposes. Doing it you will break the agreement. So in fact when one gets a software (especially if he pays for it), he will want to have freedom to use it anyhow and anywhere he wants. Unfortunately most of the non-free software denies that freedom. So, the most basic freedom given by the free software is the freedom to use it anyhow the user wishes.

\subsubsection{Freedom 1}
\textbf{The freedom to study how the program works, and change it to make it do what you wish.} How can one study what a software does in fact (not according to it's documentation) and how it realizes it's functionality. The only way is to provide the software source code along with the software. Almost no proprietary software allows users to study what it does. No software company would like it's users to get the source code of their software. And they don't provide it. Fortunately there is software except proprietary one which is available along with it's source code. Good software developers can learn a lot examining source codes written by better developers.

There is also another aspect why companies usually don't provide the source codes. Many of the proprietary software (potentially all of them) contain malicious features. In fact there are no guarantees that a particular non-free software performs those and only those actions which are listed in it's documentation. There are three major types of malicious features software can perform: spying, access restriction, back doors. Unfortunately some of the most widely spread software contain these features. It is possible because users of non-free software do not have freedom 1. 

This freedom allows also to modify the software. If users have the ability and knowledge to do that then they usually want to modify the software they have obtained to include the functionality they want. If you deal with non-free software then you have no such freedom. Of course you can add your wish to the software wish list (if any) or you can ask the support and wait for the later releases. In case of free software you can modify the software as you wish. In the case if you have no such abilities you can find someone who can do it for you (maybe for some charge).

\subsubsection{Freedom 2}
\textbf{The freedom to redistribute copies so you can help your neighbor.} This freedom solves the problem of sharing the software. Now days it's one of the biggest problems in the software world. Probably you have heard the term "pirate" concerning people who share software. So the term which describes a man who attacks ships and stoles others money is assigned to a man who shares what he has. Here we have a typical abuse of the term. In fact the term looks good from the software companies point of view. It's them who have introduced that term in the context of software sharing and they have made that stereotype. The proprietary software doesn't allow it's users to share the software with their friends. Free software, vice versa, allows it's users to share the software with everyone. So, even if you have bought a free software you are free to share it for free (with no charge). 

The world is in a stage of great changes and we all need to make our contribution in it. Let's break the stereotype which is built by the software companies concerning the software sharing. It's just matter of mentality to encourage or discourage software sharing. Software is a unique thing in these terms. When one gives a copy his software, he doesn't loose his copy. In fact sharing makes more of that software. Let's help the free software movement in this heavy battle against the "pirates" who doesn't want to share. Let's explain people that sharing is good.

\subsubsection{Freedom 3}
\textbf{The freedom to distribute copies of your modified versions to others.} After you have used your Freedom 1 and modified the free software you are able to share your version with others. This means that you may, but not ought to share. Of course this freedom is not that necessary to the ordinary users, but it makes sense for the software developers (thus for you). 


\subsection{Free software and community}

These four freedoms make possible the free software community to come up. It consists of people who develop, modify, support and maintain free software all over the world. In fact almost all the great free projects have been developed by groups of enthusiasts. And usually some of the successful free products fork and another group starts enhancing the former software.

One of the main differences between free and proprietary software is the existence of free software community. One cannot find any community of, let's say Windows developers (you can find community of developers, who make applications for Windows, but not develop, maintain or even support Windows). The free software community gives unmet opportunity to the ordinary free software users of the following form. Let's say you have obtained a free software. As time passes you find out that the software contains some bugs (every software created by human can contain bugs!). You can visit corresponding sites where the software developers usually come in, and leave a request for that bug ( besides the official bug tracker of that exact software). There is a great chance that someone will be interested in helping you to solve the problem (especially for some charge). You will not have such opportunity in case of proprietary software. Then you will have to ask the support concerning that problem and wait for the new version release or for some patch. 
